package com.winchain.chainbill.acct.controller;

import com.shell.bee.acct.account.po.AcctBas;
import com.shell.bee.base.annotation.Logging;
import com.shell.bee.base.utils.StringUtil;
import com.shell.bee.entity.mvc.RetMsg;
import com.shell.bee.persistence.model.PageLimit;
import com.shell.framework.utils.CommonFileUtil;
import com.winchain.chainbill.acct.service.BankVirtualAcctService;
import com.winchain.chainbill.acct.vo.AcctVo;
import com.winchain.provider.expiration.vo.BatchStats;
import java.io.IOException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class BankVirtualAcctController {
	@Autowired
	private BankVirtualAcctService bankVirtualAcctService;

	@RequestMapping
	@ResponseBody
	@Logging(module = "������������", methods = "��������")
	public List<AcctVo> selectBankVirtualAcctList(PageLimit limit, AcctBas acctBas) {
		return this.bankVirtualAcctService.selectBankVirtualAcctList(limit, acctBas);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "������������", methods = "��������")
	public RetMsg changeState(String acctNo, String state) {
		if ((StringUtil.emptyAndNull(acctNo)) || (StringUtil.emptyAndNull(state))) {
			return new RetMsg("error", false, "��������");
		}
		this.bankVirtualAcctService.changeState(acctNo, state);
		String msg;
		if ("N".equals(state)) {
			msg = "������������";
		} else {
			msg = "������������";
		}
		return new RetMsg("success", true, msg);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "������������", methods = "����������")
	public RetMsg batchOpen(String bankCode) {
		try {
			return this.bankVirtualAcctService.batchOpen(bankCode);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new RetMsg("error", true, "��������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "������������", methods = "��������")
	public RetMsg syncAcctBlc(String acctNos) throws IOException {
		if (StringUtil.emptyAndNull(acctNos)) {
			return new RetMsg("error", false, "��������");
		}
		String[] acctNoArr = acctNos.split(",");
		BatchStats<String> stats = this.bankVirtualAcctService.syncAcctBlc(acctNoArr);
		if (acctNoArr.length == stats.getAffectedRows()) {
			return new RetMsg("success", true, "������������");
		}
		if (stats.getAffectedRows() == 0) {
			return new RetMsg("error", true, "������������", CommonFileUtil.changMsg(stats.getAbnormalMsg()));
		}
		return new RetMsg("warning", true, "����������������", CommonFileUtil.changMsg(stats.getAbnormalMsg()));
	}
}
